/*
 * L9ResStr.h
 *
 *  Created on: 2011-10-18
 *      Author: baixp
 */

#ifndef L9RESSTR_H_
#define L9RESSTR_H_
#include <FBase.h>
#include <vector>
#include <fstream>
#include <string>
using namespace std;
using namespace Osp::Base;
#include "L9InputStream.h"
namespace lib9bada {
//#include "L9Str.h"
//#include "L9Util.h"
class L9ResStr {
private:
	vector<String> _pStr_Text;
	int _nStrRow;
	void _initResStr(L9InputStream& in);
	String _sToken;// = "XXXX";
	String _sSep;// = ",";
	void defaultInit() {
		_sToken = "XXXX";
		_sSep = ",";
	}
public:
	L9ResStr();
	/**
	 * 构造函数,根据UTF-8编码来构造L9StrRes对象,里面每个字符串都是UTF-8编码
	 * @param sFile String
	 * @param sEncode String
	 */
	L9ResStr(const char* sFile);
	/**
	 * 根据L9输入流和UTF-8编码来创建资源字符串,L9输入流中存储的是UTF-8编码的字符串
	 * @param in
	 * @param sEncode
	 */
	L9ResStr(L9InputStream in);
	virtual ~L9ResStr();

	/**
	 * 设置Token和字符串分隔符，也就是说在 Excel中的文本资源以Token作为占位符,在程序中组织替换字符串以sSep作为分隔符来依次替换
	 */
	void setTokenAndSep(String sToken = "XXXX", String sSep = ",");

	/**
	 * 返回字符串数
	 * @return int
	 */
	int getCount();

	/**
	 * 根据字符串编码返回对应的字符串
	 * @param res_id int
	 * @return String
	 */
	String getResStr(int res_id);
	/**
	 * 在字符串编号所对应的字符串中查找sToken字符串，然后用sArr里面的字符串来替换，最后返回被替换后的字符串
	 * 注意替换字符串sReplace以sep分隔，使用如下：
	 * String str=“红队的成绩，分数XXXX,所用时间XXXX分钟!”;
	 * str=getResStr(17,"XXXX","86,2",",");
	 * 调用getResStr函数后的字符串变为“红队的成绩，分数86,所用时间2分钟!”
	 * @param res_id int
	 * @param sToken String
	 * @param sReplace String
	 * @param sep String
	 * @return String
	 */
	String getResStr(int res_id, String sToken, String sReplace, String sep);
	/**
	 * 使用默认token和字符串分隔符来返回资源字符串
	 * @return String
	 */
	String getResStr(int res_id, String sReplace);
};
};
#endif /* L9RESSTR_H_ */
